#ifndef __YCQGEOSERVICEPROVIDER_H__
#define __YCQGEOSERVICEPROVIDER_H__

#include <QtCore/QObject>
#include <QtLocation/QGeoServiceProviderFactory>
#include <QtPlugin>

/**
 * @brief YC地理服务提供工厂类
 * 
 * 该类实现了Qt的QGeoServiceProviderFactory接口，用于创建YC的地理服务相关引擎，
 * 包括地理编码、地图渲染等服务。作为Qt插件机制的一部分，该工厂类负责根据参数创建
 * 各种地理服务引擎实例。
 */
class YCQGeoServiceProviderFactory: public QObject, public QGeoServiceProviderFactory
{
    Q_OBJECT
    Q_INTERFACES(QGeoServiceProviderFactory)
    Q_PLUGIN_METADATA(IID "org.qt-project.qt.geoservice.serviceproviderfactory/5.0" FILE "qgc_maps_plugin.json")

public:
    /**
     * @brief 创建地理编码管理引擎
     * @param parameters 初始化参数
     * @param error 错误代码指针
     * @param errorString 错误信息字符串指针
     * @return 地理编码管理引擎实例指针
     */
    QGeoCodingManagerEngine*    createGeocodingManagerEngine    (const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString) const;
    
    /**
     * @brief 创建地图渲染管理引擎
     * @param parameters 初始化参数
     * @param error 错误代码指针
     * @param errorString 错误信息字符串指针
     * @return 地图渲染管理引擎实例指针
     */
    QGeoMappingManagerEngine*   createMappingManagerEngine      (const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString) const;
    
    /**
     * @brief 创建路径规划管理引擎
     * @param parameters 初始化参数
     * @param error 错误代码指针
     * @param errorString 错误信息字符串指针
     * @return 路径规划管理引擎实例指针，YC中未实现，返回nullptr
     */
    QGeoRoutingManagerEngine*   createRoutingManagerEngine      (const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString) const;
    
    /**
     * @brief 创建地点管理引擎
     * @param parameters 初始化参数
     * @param error 错误代码指针
     * @param errorString 错误信息字符串指针
     * @return 地点管理引擎实例指针，YC中未实现，返回nullptr
     */
    QPlaceManagerEngine*        createPlaceManagerEngine        (const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString) const;
};

#endif // __YCQGEOSERVICEPROVIDER_H__